//c语言不允许重名函数存在，因此各个函数的名称必须不同

//函数重载：
//是函数的一种特殊情况，C++允许在 同一作用域 中声明几个功能类似的 同名函数
//这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同
//常用来处理实现功能类似数据类型不同的问题。


//函数重载并不影响运行效率，函数重载只影响编译速度不影响运行速度
#include<iostream>
using namespace std;


//1.参数类型不同
int Add(int a, int b)
{
	return a + b;
}

double Add(double a, double b)
{
	return a + b;
}


//2.参数个数不同
void print()
{
	cout << "the first" << endl;
}

void print(int i)
{
	cout << "the second" << endl;
}

//3.参数类型顺序不同
void show(char a, int b)
{
	cout << "show1" << endl;
}

void show(int a, char b)
{
	cout << "show2" << endl;
}


//函数不能重载的情况
//1.函数返回值不同，在主函数调用时，编译器无法判别返回什么类型，造成二义性
/*int ret()
{
	return 10;
}

char ret()
{
	return 'a';
}*/

//2.仅函数作用域不同
class test
{
public:
	static void func(int i)
	{

	}
	void func(int i)
	{

	}

};

//3.参数仅指针与数组的差别
void func1(int* ptr);
void func1(int ptr[]);//相当于重声明

int main()
{
	show('a', 1);
	show(1, 'a');

	test t1;
	t1.func(1);
	t1.func(2);
	return 0;
}





